Tomáš Pospíšek's Notizblock
Ich wurde eingeladen an einem Vortrag der Obergurus von und über mod_cluster zuzuhören. Kurioserweise fand ich das, anderst als viele Geek Freunde, aber uninteressant.
Ich war überrascht, weshalb dem nun so sei. Daraus entstand folgendes Mail:
...
Während der letzten Paar Tage war ein nice idle Thread in meinem Hirn gescheduled, welcher diese Thematik durchmühlte.
Den Ausschlag, dass mir der 20er fiel, gab, dass ich mich wieder einmal mit Debian-Exim4's absurd komplexer Konfiguration befassen musste.
Der zentrale Punkt daraus:
The reason I dropped sendmail 15 years ago was that the configuration
was way more complex than learning a new computer language. Exim4 has
got to the exact same point by now: Debian’s variant of Exim4 has
dozens of interdependent config files, partially created from templates
and being rebuild by generators with half-standardized variables etc.
It’s a pain. Maybe I should have upgraded to postfix from exim3
instead.
Evidently the Mail community needs a variation of Greenspun’s Tenth
Rule Of Programming:
“Any sufficiently advanced MTA program contains an ad-hoc,
informally-specified reimplementation of sendmail’s configuration
system”
Beim mod_cluster Themenbereicht ist die Situation nach meinem Gefühl gleich.
Jedes Mal, wenn ich was an unserer Webserving Konfig ändern muss, wenn ich ein Ruby oder Mongrel oder Apache oder Nginx Upgrade machen muss, dann hab ich dieses flaue Gefühl im Magen, bzw. einfach Angst, dass dieser Mikado-Haufen zusammenfällt.
Es macht mich nicht an, ich habe keine Freude dran. Das System ist unübersichtlich, undurchsichtig komplex und labil:
jeder Teil der Kette befasst sich mit der Manipulation der URL: zuerst Nginx, dann entweder Apache oder Mongrel, dann der Routing Teil von Rails, dann Rails' Controller und am Schluss unter Umständen auch noch Rubys Libraries. Wenn nur etwas (z.B. eine IP Adresse) leicht ändert, dann geht das ganze nicht mehr.
Debuggen ist die Hölle, Nginx erlaubt z.B. nicht zur Laufzeit anzuzeigen, welche Rule matched und wie die URL umgeschrieben wird. -> Trial-and-Error in Produktion.
Und dabei gab mir schon nur Apache's Konfiguration, ohne all die anderen Komponenten früher schon dieses schlechte Gefühl und hatte diese meiner Meinung nach schlechten Eigenschaften (komplex, labil, interdependent, schlecht debugbar, trial&error).
Der Bauch sagt mir: flieh!
Und nun also der nächste Schritt - das ganze soll, womöglich regelbasiert, mittels Regeln, die nota-bene z.B. in Java Sourcecode implementiert sind und somit nicht zu Laufzeit in Cleartext sichtbar oder änderbar sind, zu Laufzeit dynamisch umkonfiguriert werden.
WS-Deathstar. Das ist die falsche Richtung. In this direction lies doom and desperation. IMHO.
Ich kann verstehen, dass Kompexität per se, als l'art pour l'art fasziniert, zumindest für meinen Magen ist das Gesammtsystem jetzt schon von angsteinflössender Komplexität. Für mich wäre also die andere Richtung interessant -> das ganze System einfacher zu machen:
- weniger Komponenten
- harte, intuitiv offensichtlich klare Separation of Concerns
?
Lösung: Unit Testing für System Administration? Da war doch Mal so ein Projekt dafür?
Tomáš Pospíšek, 2009-03-02